home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Emulators / v2600 / Source.lha / Source / amiga_joy.c < prev    next >
C/C++ Source or Header  |  1997-04-24  |  1KB  |  75 lines

  1. // Matthew Stroup
  2. // Joystick driver for v2600
  3. // January 23, 1997
  4.  
  5. #include "config.h"
  6. #include "options.h"
  7. #include <exec/types.h>
  8. #include <hardware/custom.h>
  9. #include <hardware/cia.h>
  10.  
  11. #define LJOYMASK 0x01
  12. #define RJOYMASK 0x02
  13. #define UJOYMASK 0x04
  14. #define DJOYMASK 0x08
  15. #define B1JOYMASK 0x10
  16. #define B2JOYMASK 0x20
  17.  
  18. #define CIAAPRA 0xBFE001 
  19.  
  20. #define FIRE   1
  21. #define RIGHT  2
  22. #define LEFT   4
  23. #define DOWN   8
  24. #define UP    16
  25.  
  26. extern struct Custom far custom;
  27. struct CIA *ciajoy = (struct CIA *) CIAAPRA;
  28. static int joyres[2] = {0, 0};
  29.  
  30. int get_realjoy (int stick)
  31. {
  32.   return joyres[stick];
  33. }
  34.  
  35. int read_realjoy (int stick)
  36. {
  37. UWORD joy;
  38. int blah=0;
  39.  
  40.     if (stick == 1) joy = custom.joy0dat;
  41.     else joy=custom.joy1dat;
  42.  
  43.     if (!(ciajoy->ciapra & 0x0080)) blah|=B1JOYMASK;
  44.     if (joy & 0x0002) blah|=RJOYMASK;
  45.     if (joy & 0x0200) blah|=LJOYMASK;
  46.     if ((joy >> 1 ^ joy) & 0x0001) blah|=DJOYMASK;
  47.     if ((joy >> 1 ^ joy) & 0x0100) blah|=UJOYMASK;
  48.     return(blah);
  49. }
  50.  
  51.  
  52. /* This should be called once per frame */
  53. void update_realjoy (void)
  54. {
  55.     if (base_opts.realjoy == 0) return;
  56.     joyres[0] = read_realjoy (0);
  57.     joyres[1] = read_realjoy (1);
  58. }
  59.  
  60.  
  61. /* These can be called from anywhere. */
  62. void calibrate_realjoy (int stick)
  63. {
  64. }
  65.  
  66.  
  67. void init_realjoy (void)
  68. {
  69. }
  70.  
  71.  
  72. void close_realjoy (void)
  73. {
  74. }
  75.